package com.wzh.designmode.create.singleton;
/**
 * 枚举 类型单例
 * @author wzh
 *
 */
public enum EnumSingle {
	single;//初始化线程安全 表示整个类
	public void sayHello(){
		System.out.println("Hello");
	}
	
	//自己实现readResolve方法 可以保证单例 
	//传统单例存在的另外一个问题是一旦你实现了序列化接口，
	//那么它们不再保持单例了，因为readObject()方法一直返回一个新的对象就像java的构造方法一样，
	//你可以通过使用readResolve()方法来避免此事发生
	private Object readResolve(){
		return single;
	}
	//这样甚至还可以更复杂，如果你的单例类维持了其他对象的状态的话，
	//因此你需要使他们成为transient的对象。但是枚举单例，JVM对序列化有保证。
	
}
